#include<iostream>
#include<algorithm>

using namespace std;

const int N=1010;

int g[N][N],n;
bool st[N][N],k;
int s[2][4]={
	1,0,-1,0,
	0,-1,0,1
};


bool check(int x,int y)
{
	if(x>=n||y>=n||x<0||y<0) 
		return false;
	return true;
}


void dfs(int x,int y,int ans)
{
	if(ans==n*n/2){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				printf("%d",g[i][j]);
			}
			printf("\n");
		}
		k=true; 
		return;
	}
	
	for(int i=0;i<4;i++){
		int x_n=x+s[0][i];
		int y_n=y+s[1][i];
		if(check(x_n,y_n)&&!st[x_n][y_n]){
			st[x_n][y_n]=true;
			st[n-x_n-1][n-y_n-1]=true;
			g[x_n][y_n]=1;
			g[n-x_n-1][n-y_n-1]=0;
			
			dfs(x_n,y_n,ans+1);
			
			if(k) return;
			st[x_n][y_n]=false;
			st[n-x_n-1][n-y_n-1]=false;
		}
	}
}


int main()
{
	scanf("%d",&n);
	
	int p=n/2;
	st[p][p]=true;
	st[n-p-1][n-p-1]=true;
	g[p][p]=1;
	g[n-p-1][n-p-1]=0;
	dfs(p,p,1);
	
	return 0;
}
